<?php
/**
 * 字符串操作类
 * User: 小菜鸟儿
 * Email: 496651923@qq.com
 */

namespace library;


class StringOperate
{
    /**
     *	获取传递过来的字符中的所有本地图片
     *	@param string $content		内容
     *	@param int $order	排序
     */
    public static function getImgs($content, $order = '') {
        $pattern = "/<img.*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/";
        preg_match_all ( $pattern, $content, $match );
        if (isset ( $match [1] ) && ! empty ( $match [1] )) {
            if ($order != '' && is_numeric ( $order ) && isset ( $match [1] [$order] )) {
                return $match [1] [$order];
            } else {
                return $match [1];
            }
        }
        return '';
    }

    /**
     *	删除传递过来的字符中的所有本地图片
     *	@param	string $content 内容
     */
    public static function delStrImgs($content='') {
        // 获取字符中的所有图片
        $img_list = self::getImgs ( $content );
        foreach ( $img_list as $key => $val ) {
            if (file_exists ( $val )) {
                @unlink ( $val );
            }
        }
        return '';
    }
    /**
     *	替换/还原本地图片路径
     *	@param	string	$str 字符串
     *	@param	string	$type 类型
     */
    public static function replaceStrImg($str, $type = "") {
        if ($type == "replace") {
            $str = str_replace ( 'http://' . $_SERVER ['SERVER_NAME'], '', $str );
            $str = str_replace ( 'https://' . $_SERVER ['SERVER_NAME'], '', $str );
            $str = str_replace ( request()->root() . '/Uploads', 'Uploads', $str );
        } else {
            $str = str_replace ( 'Uploads', request()->root() . '/Uploads', $str );
        }
        return $str;
    }

    /**
     * 获取随机字符串
     * @param number $length	获取随机字符串的长度,默认为6
     * @param string $strPol	备选字符组成的字符串,默认为A-Za-z0-9;
     * @return string		获取的随机字符串
     */
    public static function getRandChar($length = 6,$strPol=''){
        $str = '';
        $strPol = $strPol==''?"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz":$strPol;
        $max = strlen($strPol)-1;
        for($i=0;$i<$length;$i++){
            $str.=$strPol[rand(0,$max)];//rand($min,$max)生成介于min和max两个数之间的一个随机整数
        }
        return $str;
    }

	/**
	 * 订单号生产
	 * @param string $prefix 前缀
	 * @return string 返回24位唯一订单号
	 */
	public static function orderNo($prefix = '') {
		//订单号码主体（YYYYMMDDHHIISSNNNNNNNN）
		$order_no=date('YmdHis').rand(10000000,99999999);
		//订单号码主体长度
		$order_no_len=strlen($order_no);
		$order_no_sum=0;
		for($i=0;$i<$order_no_len;$i++){
			$order_no_sum+=(int)(substr($order_no,$i,1));
		}
		//唯一订单号码（YYYYMMDDHHIISSNNNNNNNNCC）
		return $prefix.$order_no.str_pad((100-$order_no_sum%100)%100,2,'0',STR_PAD_LEFT);
	}
    /**
     * 字符串截取，支持中文和其他编码
     * @param string $str 需要转换的字符串
     * @param int $start 开始位置
     * @param int $length 截取长度
     * @param string $charset 编码格式
     * @param string $suffix 截断显示字符
     * @return string
     */
    public static function msubstr($str = '', $start = 0, $length = 1, $charset = "utf-8", $suffix = '...') {
        $str = trim(strip_tags($str));
        if(mb_strlen($str,$charset) <= $length) return $str;
        if(function_exists("mb_substr")){
            $slice = mb_substr($str, $start, $length, $charset);
        }elseif(function_exists('iconv_substr')) {
            $slice = iconv_substr($str,$start,$length,$charset);
            if(false === $slice) {
                $slice = '';
            }
        }else{
            $re['utf-8']   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
            $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
            $re['gbk']    = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
            $re['big5']   = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
            preg_match_all($re[$charset], $str, $match);
            $slice = join("",array_slice($match[0], $start, $length));
        }
        return $slice . $suffix;
    }


}